﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace INSTA.AI97.BankApp.BLL
{
    /// <summary>
    /// Classe implémentée en tant que design-pattern Singleton.
    /// La définition d'un Singleton est :
    /// 
    /// "Une classe dont seule une instance peut exister,
    /// et qui fournit, sous la forme d'une méthode, un point
    /// d'accès global à cette instance".
    /// </summary>
    public class Bank
    {
        #region -- Singleton Implémentation --

        // variable qui va contenir l'instance unique 
        // de la classe Bank.
        private static Bank _instance = null;

        /// <summary>
        /// Constructeur privé qui empêche l'instanciation
        /// depuis l'extérieur de la classe.
        /// </summary>
        private Bank()
        { }

        /// <summary>
        /// Point d'accès global à l'instance unique
        /// de la classe Bank.
        /// </summary>
        /// <returns>L'instance unique de la classe Bank</returns>
        public static Bank Instance()
        {
            // Si c'est le 1er appel....
            if (_instance == null)
            {
                // On crée l'instance unique en appelant 
                // le constructeur privé (depuis l'intérieur
                // de la classe, donc ok).
                _instance = new Bank();
            }

            // On renvoie l'instance précédemment créee.
            return _instance;
        }


        #endregion

    }
}
